﻿using QuanLyChoVayCaNhan.Forms;
using QuanLyChoVayCaNhan.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyChoVayCaNhan.Classes
{
    public class ThamDinhTinDungTab : BaseTab
    {

        public ThamDinhTinDungTab(System.Windows.Forms.BindingSource hoSoBindingSource)
        {
            // TODO: Complete member initialization
            this.MainBindingDataSource = hoSoBindingSource;
        }
        public override TabType GetTabType()
        {
            return TabType.ThamDinhTinDungTab;
        }

        public override MenuItemType[] GetSupportedMenus()
        {
            if (UserManager.GetInstance().IsAdmin())
            {
                return new MenuItemType[] { MenuItemType.VIEW_TDTD, MenuItemType.PRINT_TDTD, MenuItemType.VIEW_TTTD, MenuItemType.PRINT_TTTD, MenuItemType.REFRESH };
            }
            if (UserManager.GetInstance().IsCBTDTD())
            {
                return new MenuItemType[] { MenuItemType.VIEW_TDTD, MenuItemType.EDIT_TDTD, MenuItemType.PRINT_TDTD, MenuItemType.VIEW_TTTD, MenuItemType.EDIT_TTTD, MenuItemType.PRINT_TTTD, MenuItemType.REFRESH };
            }
            return new MenuItemType[] { MenuItemType.VIEW_TDTD, MenuItemType.VIEW_TTTD, MenuItemType.REFRESH };
        }

        public override void LoadData()
        {
            this.MainBindingDataSource.DataSource = ModelManager.GetInstance().db.HoSoes.ToList();
        }

        public override string GetTabTitle()
        {
            return "Thẩm định tín dụng";
        }

        public override void OnAddClick()
        {
            throw new NotImplementedException();
        }

        public override void OnViewClick()
        {
            throw new NotImplementedException();
        }

        public override void OnEditClick()
        {
            throw new NotImplementedException();
        }

        public override void OnDeleteClick()
        {
            throw new NotImplementedException();
        }

        public override void OnHelpClick()
        {
            throw new NotImplementedException();
        }

        public override void OnPrintClick()
        {
            throw new NotImplementedException();
        }

        public override void OnRefreshClick()
        {
            LoadData();
        }



        public override void OnViewTDTDClick()
        {
            if (SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)SelectedItem;
            if (hs.SoThamDinh == null || hs.SoThamDinh == 0)
            {
                MessageBox.Show("Hồ sơ này chưa được thẩm định tín dụng");
                return;
            }
            ViewThamDinhTinDung fViewThamDinhTinDung = new ViewThamDinhTinDung();
            fViewThamDinhTinDung.FormClosed += reloadData_FormClosed;
            fViewThamDinhTinDung.ShowDialog();
        }

        public override void OnViewTTTDClick()
        {
            if (SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)SelectedItem;
            if (hs.SoToTrinh == null || hs.SoToTrinh == 0)
            {
                MessageBox.Show("Hồ sơ này chưa được lập tờ trình tín dụng");
                return;
            }
            ViewToTrinhTinDung fViewToTrinhTinDung = new ViewToTrinhTinDung();
            fViewToTrinhTinDung.ShowDialog();
        }

        public override void OnViewTSDBClick()
        {
            throw new NotImplementedException();
        }

        public override void OnEditTDTDClick()
        {
            if (SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)SelectedItem;
            if (hs.SoThamDinh == null || hs.SoThamDinh == 0)
            {
                // khong co quyen lap bao cao
                if (!UserManager.GetInstance().IsCBTDTD())
                {
                    MessageBox.Show("Bạn không có quyền lập báo cáo thẩm định tín dụng");
                    return;
                }
            }
            else if (hs.MaNVCBTDTD != UserManager.GetInstance().GetMaNhanVien())
            {
                MessageBox.Show("Bạn không có quyền cập nhật báo cáo thẩm định tín dụng cho hồ sơ này\nQuyền cập nhật thuộc về CBTD: "+hs.NhanVienCBTDTD.TenNV);
                return;
            }
            // lap bao cao tin dung moi hoac cap nhat
            EditThamDinhTinDung fEditThamDinhTinDung = new EditThamDinhTinDung();
            fEditThamDinhTinDung.FormClosed += reloadData_FormClosed;
            fEditThamDinhTinDung.ShowDialog();
        }

        public override void OnEditTTTDClick()
        {
            if (SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }

            HoSo hs = (HoSo)SelectedItem;
            if (hs.SoToTrinh == null || hs.SoToTrinh == 0)
            {
                // khong co quyen lap to trinh
                if (UserManager.GetInstance().GetMaNhanVien() != hs.MaNVCBTDTD)
                {
                    MessageBox.Show("Bạn không có quyền lập tờ trình tín dụng cho hồ sơ này");
                    return;
                }
                AddToTrinhTinDung fAddToTrinhTinDung = new AddToTrinhTinDung();
                fAddToTrinhTinDung.FormClosed += reloadData_FormClosed;
                fAddToTrinhTinDung.ShowDialog();
            }
            else
            {
                // khong co quyen lap to trinh
                if (UserManager.GetInstance().GetMaNhanVien() != hs.MaNVCBTDTD)
                {
                    MessageBox.Show("Bạn không có quyền cập nhật tờ trình tín dụng cho hồ sơ này");
                    return;
                }
                EditToTrinhTinDung fEditToTrinhTinDung = new EditToTrinhTinDung();
                fEditToTrinhTinDung.FormClosed += this.reloadData_FormClosed;
                fEditToTrinhTinDung.ShowDialog();
            }
        }

        void reloadData_FormClosed(object sender, FormClosedEventArgs e)
        {
            LoadData();
        }

        public override void OnAddTSDBClick()
        {
            throw new NotImplementedException();
        }

        public override void OnPrintTDTDClick()
        {
            if (SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)SelectedItem;
            if (hs.SoThamDinh == null || hs.SoThamDinh == 0)
            {
                MessageBox.Show("Hồ sơ này chưa được thẩm định tín dụng");
                return;
            }
            PrintManager.GetInstance().InBaoCaoThamDinhTinDung(hs);
        }

        public override void OnPrintTTTDClick()
        {
            MessageBox.Show("Đang cập nhật mẫu tờ trình tín dụng");
        }

        public override void OnPrintTSDBClick()
        {
            throw new NotImplementedException();
        }

        public override void OnSearchKHClick()
        {
            throw new NotImplementedException();
        }
    }
}
